package com.yjd.comm.base.concurrent.task;

import java.util.List;

import com.yjd.comm.util.FrameUtil;

/**
 * <b>description</b>：任务处理工具类 <br>
 * <b>time</b>：2016-4-12上午11:53:14 <br>
 * <b>author</b>： ready likun_557@163.com
 */
public class TaskDisposeUtil {

	/**
	 * 将list转换成任务列表
	 * 
	 * @param list
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> List<ITaskItem<T>> getTaskItems(List<T> list) {
		List<ITaskItem<T>> result = FrameUtil.newArrayList();
		for (T object : list) {
			result.add(new DefaultTaskItem<T>(object));
		}
		return result;
	}

	/**
	 * 多线程处理任务
	 * 
	 * @param moreThread
	 *            是否多线程处理
	 * @param poolSize
	 *            线程池大小
	 * @param list
	 *            处理的任务列表
	 * @param taskHandler
	 *            任务处理器
	 * @throws Exception
	 */
	public static <T> void dispose(boolean moreThread, int poolSize,
			List<T> list, ITaskHandler<T> taskHandler) throws Exception {
		new DefaultTaskDispose(moreThread, poolSize).taskDipose(
				TaskDisposeUtil.getTaskItems(list), taskHandler);
	}
}
